<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // js弱类型的语言
        //   数字(浮点型float,整型int)
        //   分号
        //   {}  代码块 
        //   预编译  
        //   undefined
        //   变量可以不声明直接使用
        //   变量可以重复声明
        //   。。。



        //   变量如果不声明直接赋值    变成全局变量


        //   为了让js语法更加严谨  --- ES5提出了严格模式

        //   严格模式下，变量必须声明
        //   严格模式下，普通函数的this没有指向  undefined
        //   严格模式下，不能对只读属性进行赋值

        //   严格模式也是有作用域

        //   严格模式没有解决所有的'不严谨'





        // console.log(a);   // 报错

        // function fn() {
        //     a = 2 ;
        //     console.log(a);
        // }

        // fn() ;

        // console.log(a);  // 2


        // 使用严格模式
        // 'use strict' ;
        // console.log(a);
        // var a = 1 ;
        // console.log(a);   

        
        function fn() {
            console.log(this);   // undefined
        }

        fn() ;



        var b = 3 ;
        console.log(b);
        var b = 4 ;
        console.log(b);


        var str = 'hi' ;
        console.log(str.length);

        str.length = 5 ;   // 字符串的长度不能通过赋值改变
        console.log(str.length);


        function foo() {
            // 作用域
            'use strict' ;
            var str = 'hi' ; 
            str.length = 5 ;
        }
        foo()
    </script>
    
</body>
</html>